package net.aiion.weave.spi.bytecode;

import net.aiion.weave.spi.bytecode.events.AnnotationAnnotationValueBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.AnnotationArrayValueBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.AnnotationEndBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.AnnotationEnumValueBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.AnnotationValueBytecodeEvent;

public interface BytecodeAnnotationVisitor extends BytecodeVisitor
{
    void visitAnnotationValue(AnnotationValueBytecodeEvent aAnnotationValueBytecodeEvent);

    void visitAnnotationEnumValue(AnnotationEnumValueBytecodeEvent aAnnotationEnumValueBytecodeEvent);

    BytecodeAnnotationVisitor visitAnnotationAnnotationValue(
        AnnotationAnnotationValueBytecodeEvent aAnnotationAnnotationValueBytecodeEvent);

    BytecodeAnnotationVisitor visitAnnotationArrayValue(
        AnnotationArrayValueBytecodeEvent aAnnotationArrayValueBytecodeEvent);

    void visitAnnotationEnd(AnnotationEndBytecodeEvent aAnnotationEndBytecodeEvent);
}
